/*
 * DeferredResourceStrategy.h
 *
 *  Created on: 03/10/2009
 *      Author: nik0l4z
 */

#ifndef DEFERREDRESOURCESTRATEGY_H_
#define DEFERREDRESOURCESTRATEGY_H_

#include "ResourceStrategy.h"
#include "Almacenamiento.h"
#include <list>

class DeferredResourceStrategy : public ResourceStrategy{

	private: Almacenamiento *buffer;
	private: Almacenamiento *disco;

	public: DeferredResourceStrategy();

	public:DeferredResourceStrategy(Almacenamiento *buffer,Almacenamiento *disco);

	public: virtual ~DeferredResourceStrategy();

	public: virtual void saludar();

	public: virtual int Save(string& dato, int posicionArchivo);

	public: virtual void Update(string& dato, int posicionArchivo);

	public: virtual void Delete(int posicionArchivo);

	public: virtual string GetData(int posicionArchivo);

	/**
	 * Este metodo lee datos que lleven cierto tiempo en el buffer, y que no se encuentren persistidos a disco.
	 * Los persiste, y devuelve el offset donde se persistio y la clave del dato persistido.
	 *
	 */
	public: virtual void persistOldData();

	public: virtual Almacenamiento *getStorage() const;



};

#endif /* DEFERREDRESOURCESTRATEGY_H_ */
